home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / utility / rexxalgo.zip / TESTJ2G.CMD < prev   
OS/2 REXX Batch file  |  1996-07-15  |  3KB  |  110 lines

  1. /* REXX *********************************************/
  2. /*                                                  */
  3. /* Program name: J2G                                */
  4. /* Function    : translates julian date to gregorian*/
  5. /*               date                               */
  6. /* Syntax      : gDat = J2G(yyyy.ddd)               */
  7. /* Changes     :                                    */
  8. /* Author      : Janosch R. Kowalczyk               */
  9. /*                                                  */
  10. /* Made use of GREED.  09 Jul 1996 / 18:08:30   JRK */
  11. /****************************************************/
  12. Parse Arg julDate
  13.  
  14. If julDate = '' Then julDate = 1983.267
  15.  
  16. If julDate > '' Then Do
  17.   /*-------------(Exceptions handling)--------------*/
  18.   Signal On Failure Name BEENDEN
  19.   Signal On Halt Name BEENDEN
  20.   Signal On Syntax Name BEENDEN
  21.  
  22.   julDate = TestDate(julDate)
  23.   Say julDate '--->' J2G(julDate)
  24.  
  25. End
  26. Else
  27.   Call HelpText
  28. /*-------------------(End program)------------------*/
  29. Exit
  30.  
  31. BEENDEN:
  32. Say 'GREED001E - Break, Failure or Syntax Error'
  33. Exit
  34.  
  35.  
  36. HelpText: Procedure
  37.  
  38. Say 'Syntax:'
  39. Say
  40. Say 'J2G julian_date'
  41. Say
  42. Say 'julian_date has format: yyyy.ddd (0 < ddd < 367)'
  43.  
  44. Return
  45.  
  46.  
  47. /*===============(Test plausibilty)================*/
  48. TestDate: Procedure
  49. Arg julDate
  50.  
  51. Parse Var julDate year '.' jday
  52. If jday = '' Then Do
  53.   jday = year
  54.   Parse Value Date() With . . year .
  55. End
  56. If jday < 0 ! jday > 366 Then Do
  57.   Call HelpText
  58.   Exit
  59. End
  60. If Length(year) = 2 Then year = '19' || year
  61.  
  62. Return year || '.' || jday
  63.  
  64.  
  65. /*=========(Julian Date to Gregorian Date)==========*/
  66. J2G: Procedure
  67. /*--------------------------------------------------*/
  68. /*                                                  */
  69. /* Program name: J2G                                */
  70. /* Function    : translates julian to gregorian     */
  71. /*               date                               */
  72. /* Syntax      : J2G yyyy.ddd                       */
  73. /* Author      : Janosch R. Kowalczyk               */
  74. /* Changes     :                                    */
  75. /*                                                  */
  76. /* Made use of GREED.  09 Jul 1996 / 18:08:30   JRK */
  77. /*--------------------------------------------------*/
  78. Arg julDate
  79.  
  80. Parse Var julDate year'.'jday
  81.  
  82. mon.1  = 0
  83. mon.2  = 31
  84. mon.3  = 59
  85. mon.4  = 90
  86. mon.5  = 120
  87. mon.6  = 151
  88. mon.7  = 181
  89. mon.8  = 212
  90. mon.9  = 243
  91. mon.10 = 273
  92. mon.11 = 304
  93. mon.12 = 334
  94.  
  95.  
  96. Do i = 1 To 12 Until jday < mon.i
  97. End
  98.  
  99. mon = i - 1
  100.  
  101. If year // 4 = 0 & year // 400 > 0 & mon > 2 Then leap = -1
  102. Else leap = 0
  103.  
  104. day = jday - mon.mon + leap
  105. gregDate = year'.'Right(mon,2,'0')'.'Right(day,2,'0')
  106.  
  107. return gregDate
  108.  
  109.  
  110.